package top.jacktgq.sxt.bio.ChatRoom.version3;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * @Author CandyWall
 * @Date 2019/10/22--18:45
 * @Description 在线聊天室：服务器
 *              目标：实现一个服务器可以正常收发多条消息
 *              问题：其他客户必须等待之前的客户退出，才能继续，需要排队
 */
public class ChatServer {
    public static void main(String[] args) throws IOException {
        System.out.println("服务器启动...");
        //1、指定端口 使用ServerSocket创建服务器
        ServerSocket serverSocket = new ServerSocket(8888);
        Boolean isUsedForMultiClients = true;   //是否服务于多个客户端
        while (isUsedForMultiClients) {
            //2、阻塞式等待连接accept
            Socket server = serverSocket.accept();
            System.out.println("一个客户端建立了连接");
            //3、接收客户端发送的消息
            DataInputStream dis = new DataInputStream(server.getInputStream());
            DataOutputStream dos = new DataOutputStream(server.getOutputStream());
            boolean isRunning = true;
            while (isRunning) {
                String content = dis.readUTF();
                System.out.println("客户端发来：" +  content);
                //4、返回消息
                dos.writeUTF(content);
                dos.flush();
            }

            //释放资源
            dis.close();
            dos.close();
            server.close();
        }
        serverSocket.close();
    }
}
